package es.gesfutbol.domini.implementacio;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import es.gesfutbol.domini.IIncidencia;
@Entity
@Table(name="incidencia")
public class Incidencia implements IIncidencia {

	/**
	 * 
	 */
	private static final long serialVersionUID = -791741821750398170L;

	private Long idIncidencia;
	
	private String descripcio;
	
	private String minut;
	
	private Partit partit;
	
	private Set<Jugador> jugadors;
	
	private Set<Sancio> sancions;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="idIncidencia", nullable=false, precision=10, scale=0)
	public Long getIdIncidencia() {
		return idIncidencia;
	}

	public void setIdIncidencia(Long idIncidencia) {
		this.idIncidencia = idIncidencia;
	}

	@Column(name="descripcio", nullable=false, length=45)
	public String getDescripcio() {
		return descripcio;
	}

	public void setDescripcio(String descripcio) {
		this.descripcio = descripcio;
	}

	@Column(name="minut", nullable=false, length=45)
	public String getMinut() {
		return minut;
	}

	public void setMinut(String minut) {
		this.minut = minut;
	}

	@OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idPartit", nullable=false)
	public Partit getPartit() {
		return partit;
	}

	public void setPartit(Partit partit) {
		this.partit = partit;
	}

	@ManyToMany
	@JoinTable(name="jugador_en_incidencia",
			joinColumns=@JoinColumn(name="idIncidencia", referencedColumnName="idIncidencia"),
			inverseJoinColumns=@JoinColumn(name="idJugador", referencedColumnName="idJugador"))
		public Set<Jugador> getJugadors() {
		return jugadors;
	}

	public void setJugadors(Set<Jugador> jugadors) {
		this.jugadors = jugadors;
	}

	@OneToMany(fetch=FetchType.LAZY, mappedBy="incidenciaMare", cascade=CascadeType.ALL)
	public Set<Sancio> getSancions() {
		return sancions;
	}

	public void setSancions(Set<Sancio> sancions) {
		this.sancions = sancions;
	}
}